package qldc.pm.tiensu.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import qldc.pm.csdl.cd90.model.dto.CongDanDTO;
import qldc.pm.csdl.cd90.service.CongDanDTOLocalServiceUtil;
import qldc.pm.tiensu.dto.DoiTuongTienSuDTO;
import qldc.pm.tiensu.model.DoiTuongTienSu;
import qldc.pm.tiensu.model.PhieuThongTinVeNguoiCoTienSu;
import qldc.pm.tiensu.model.TienSu;

import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.Validator;

public class DoiTuongTienSuDTOLocalServiceUtil {
	private static final SimpleDateFormat DEFAULT_DATE_FORMATE = new SimpleDateFormat("dd/MM/yyyy");

	public static List<DoiTuongTienSuDTO> findBySDDCN_CMND_SSHK_HVT_DCTT(
			String soDinhDanhCaNhan, String soCMND, String soSoHoKhau,
			String hoVaTen, long noiThuongTruTinhId,
			long noiThuongTruQuanHuyenId, long noiThuongTruPhuongXaId,
			String noiThuongTruDiaChi, Date tuNgayPhamToi,
			Date denNgayPhamToi, String banAnSo, Date tuNgayToaAn, Date denNgayToaAn,int trangThai, int start, int end, OrderByComparator obc) {
		List<DoiTuongTienSuDTO> doiTuongTienSuDTOs = new ArrayList<DoiTuongTienSuDTO>();

		List<Object[]> doiTuongTienSus = DoiTuongTienSuLocalServiceUtil.findBySDDCN_CMND_HVT_SSHK_DCTT(soDinhDanhCaNhan, soCMND, hoVaTen, soSoHoKhau, noiThuongTruTinhId, noiThuongTruQuanHuyenId, noiThuongTruPhuongXaId, noiThuongTruDiaChi, tuNgayPhamToi, denNgayPhamToi, banAnSo, tuNgayToaAn, denNgayToaAn, trangThai, start, end, obc);

		DoiTuongTienSuDTO doiTuongTienSuDTO;
		if(Validator.isNotNull(doiTuongTienSus) && !doiTuongTienSus.isEmpty()) {
			for (Object[] objects : doiTuongTienSus) {
				doiTuongTienSuDTO = new DoiTuongTienSuDTO();

				doiTuongTienSuDTO.setDoiTuongTienSuId((Long) objects[0]);
				doiTuongTienSuDTO.setSoDinhDanhCaNhan((String) objects[1]);
				doiTuongTienSuDTO.setXoaAnTich((Boolean) objects[2]);
				doiTuongTienSuDTO.setHoVaTen((String) objects[3]);
				doiTuongTienSuDTO.setSoCMND(Validator.isNotNull(objects[4]) ? (String) objects[4] : "");
				doiTuongTienSuDTO.setNoiThuongTruTinhId(Validator.isNotNull(objects[5]) ? (Long) objects[5] : 0L);
				doiTuongTienSuDTO.setNoiThuongTruQuanHuyenId(Validator.isNotNull(objects[6]) ? (Long) objects[6] : 0L);
				doiTuongTienSuDTO.setNoiThuongTruPhuongXaId(Validator.isNotNull(objects[7]) ? (Long) objects[7] : 0L);
				doiTuongTienSuDTO.setNoiThuongTruDiaChi(Validator.isNotNull(objects[8]) ? (String) objects[8] : "");

				TienSu latestTienSu = TienSuLocalServiceUtil.findByDoiTuongTienSuId_Latest(doiTuongTienSuDTO.getDoiTuongTienSuId());
				if(Validator.isNotNull(latestTienSu)) {
					doiTuongTienSuDTO.setNgayPhamToi(Validator.isNotNull(latestTienSu.getNgayPhamToi()) ? DEFAULT_DATE_FORMATE.format(latestTienSu.getNgayPhamToi()) : "");
					doiTuongTienSuDTO.setBanAnSo(latestTienSu.getBanAnSo());
					doiTuongTienSuDTO.setNgayToaAn(Validator.isNotNull(latestTienSu.getNgayToaAn()) ? DEFAULT_DATE_FORMATE.format(latestTienSu.getNgayToaAn()) : "");
				}

				doiTuongTienSuDTOs.add(doiTuongTienSuDTO);
			}
		}

		return doiTuongTienSuDTOs;
	}

	public static int countBySDDCN_CMND_SSHK_HVT_DCTT(
			String soDinhDanhCaNhan, String soCMND, String soSoHoKhau,
			String hoVaTen, long noiThuongTruTinhId,
			long noiThuongTruQuanHuyenId, long noiThuongTruPhuongXaId,
			String noiThuongTruDiaChi, Date tuNgayPhamToi,
			Date denNgayPhamToi, String banAnSo, Date tuNgayToaAn, Date denNgayToaAn, int trangThai) {
		return DoiTuongTienSuLocalServiceUtil.countBySDDCN_CMND_HVT_SSHK_DCTT
				(soDinhDanhCaNhan, soCMND, hoVaTen, soSoHoKhau, noiThuongTruTinhId, noiThuongTruQuanHuyenId, noiThuongTruPhuongXaId, noiThuongTruDiaChi, tuNgayPhamToi, denNgayPhamToi, banAnSo, tuNgayToaAn, denNgayToaAn, trangThai);

	}

	public static DoiTuongTienSuDTO fromDoiTuongTienSu(DoiTuongTienSu doiTuongTienSu) {
		String soDinhDanhCaNhan = doiTuongTienSu.getSoDinhDanhCaNhan();

		CongDanDTO congDanDTO = CongDanDTOLocalServiceUtil.findBySoDinhDanhCaNhan(soDinhDanhCaNhan);

		DoiTuongTienSuDTO doiTuongTienSuDTO = new DoiTuongTienSuDTO();
		doiTuongTienSuDTO.setDoiTuongTienSuId(doiTuongTienSu.getDoiTuongTienSuId());

		if(Validator.isNotNull(congDanDTO)) {
			doiTuongTienSuDTO.setHoVaTen(congDanDTO.getHoVaTen() != null ? congDanDTO.getHoVaTen() : "");
			doiTuongTienSuDTO.setGioiTinh(congDanDTO.getGioiTinh());
			doiTuongTienSuDTO.setSoDinhDanhCaNhan(soDinhDanhCaNhan != null ? soDinhDanhCaNhan : "");
			doiTuongTienSuDTO.setSoCMND(congDanDTO.getSoCMND() != null ? congDanDTO.getSoCMND() : "");
			doiTuongTienSuDTO.setSoSoHoKhau(congDanDTO.getSoSoHoKhau() != null ? congDanDTO.getSoSoHoKhau() : "");
			doiTuongTienSuDTO.setNgaySinh(congDanDTO.getNgaySinh() != null ? congDanDTO.getNgaySinh() : "");
			doiTuongTienSuDTO.setNoiThuongTruTinhId(congDanDTO.getNoiThuongTruTinhId());
			doiTuongTienSuDTO.setNoiThuongTruQuanHuyenId(congDanDTO.getNoiThuongTruQuanHuyenId());
			doiTuongTienSuDTO.setNoiThuongTruPhuongXaId(congDanDTO.getNoiThuongTruPhuongXaId());
			doiTuongTienSuDTO.setNoiThuongTruDiaChi(congDanDTO.getNoiThuongTruDiaChi() != null ? congDanDTO.getNoiThuongTruDiaChi() : "");
			doiTuongTienSuDTO.setDanTocId(congDanDTO.getDanTocId());
			doiTuongTienSuDTO.setTonGiaoId(congDanDTO.getTonGiaoId());
			doiTuongTienSuDTO.setQuocTich(congDanDTO.getQuocTich() != null ? congDanDTO.getQuocTich() : "");
			doiTuongTienSuDTO.setHoVaTenCha(congDanDTO.getHoVaTenCha() != null ? congDanDTO.getHoVaTenCha() : "");
			doiTuongTienSuDTO.setHoVaTenMe(congDanDTO.getHoVaTenMe() != null ? congDanDTO.getHoVaTenMe() : "");
			//doiTuongTienSuDTO.setHoVaTenMe(doiTuongTienSu.get.get);

		}

		TienSu tienSu = TienSuLocalServiceUtil.findByDoiTuongTienSuId_Latest(doiTuongTienSu.getDoiTuongTienSuId());
		if(Validator.isNotNull(tienSu)) {
			doiTuongTienSuDTO.setToaAnXuPhat(tienSu.getToaAnXuPhat() != null ? tienSu.getToaAnXuPhat() : "");
			doiTuongTienSuDTO.setNgayToaAn(tienSu.getNgayToaAn() != null ? parseDateToString(tienSu.getNgayToaAn()) : "");
			doiTuongTienSuDTO.setBanAnSo(tienSu.getBanAnSo() != null ? tienSu.getBanAnSo() : "");
			doiTuongTienSuDTO.setNgayPhamToi(tienSu.getNgayPhamToi() != null ? parseDateToString(tienSu.getNgayPhamToi()) : "");
			doiTuongTienSuDTO.setTienAnNeuCo(tienSu.getMoTaTienAn() != null ? tienSu.getMoTaTienAn() : "");
			doiTuongTienSuDTO.setToiDanh(tienSu.getToiDanh() != null ? tienSu.getToiDanh() : "");
			doiTuongTienSuDTO.setNoiDungXuPhat(tienSu.getHinhPhatChinh() != null ? tienSu.getHinhPhatChinh() : "");
			PhieuThongTinVeNguoiCoTienSu phieu = PhieuThongTinVeNguoiCoTienSuLocalServiceUtil.findByTienSuId(tienSu.getTienSuId());

			if(Validator.isNotNull(phieu)) {
				doiTuongTienSuDTO.setMaSoPhieuThongTinTienSu(phieu.getMaSoHoSoTienSuTuToaAn() != null ? phieu.getMaSoHoSoTienSuTuToaAn() :"");
				doiTuongTienSuDTO.setHoVaTenNguoiLapPhieu(phieu.getNguoiTrichLuc() != null ? phieu.getNguoiTrichLuc() :"");
				doiTuongTienSuDTO.setHoVaTenNguoiKyPhieu(phieu.getNguoiTrichLuc() != null ? phieu.getNguoiTrichLuc() :"");
				doiTuongTienSuDTO.setChuThich(phieu.getChuThich() != null ? phieu.getChuThich() :"");
 				doiTuongTienSuDTO.setNoiTamTruDiaChi(phieu.getNoiTamTruDiaChi() != null ? phieu.getNoiTamTruDiaChi() :"");
 				doiTuongTienSuDTO.setHoVaTenCha(phieu.getHoTenCha() != null ? phieu.getHoTenCha() :"");
 				doiTuongTienSuDTO.setHoVaTenMe(phieu.getHoTenMe() != null ? phieu.getHoTenMe() :"");
			}
		}
		return doiTuongTienSuDTO;
	}

	public static String parseDateToString(Date date) {
		String result = "";

		if(Validator.isNotNull(date)) {
			result = DEFAULT_DATE_FORMATE.format(date);
		}

		return result;
	}
}
